package com.icinfo.cloud.provider.punish.vo;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.icinfo.cloud.provider.punish.fastcase.vo.AppFastCaseSendDocumentVo;
import com.icinfo.cloud.provider.punish.fastcase.vo.FastAutoCloseCaseReminderVo;
import com.icinfo.cloud.provider.punish.fastcase.vo.FastCaseButtonVo;
import com.icinfo.cloud.provider.punish.ucase.casemain.model.CaseHandlePersonRecord;
import com.icinfo.cloud.provider.punish.ucase.casemain.model.CasePartiesLegalInfo;
import com.icinfo.cloud.provider.punish.ucase.casemain.model.CasePartiesPersonInfo;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseReasonEntrustVo;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/** 案件基础信息返回视图
 * @author  lxj
 */
@Data
public class CaseInfoVo {

    /**
     * 案件id
     */
    private String caseId;

    /**
     * 案由编码
     */
    private String caseReasonCode;

    /**
     * 案由名称
     */
    private String caseReasonName;

    /**
     * 当事人类型名称
     */
    private String partyTypeName;
    /**
     * 案件当事人个人详细信息
     */
    private CasePartiesPersonInfo casePartiesPersonInfo;
    /**
     * 案件当事人法人详细信息
     */
    private CasePartiesLegalInfo casePartiesLegalInfo;

    /**
     * 办案人员列表
     */
    private List<CaseHandlePersonRecord> caseHandlePersonList;

    /**
     * 办案部门
     */
    private String caseHandlingDeptInfo;



    /**
     * 案件名称
     */
    private String caseName;

    /**
     * 案件编号
     */
    private String caseNumber;

    /**
     * 案件来源
     */
    private String caseSource;

    /**
     * 案件类型
     */
    private String caseType;

    /**
     * 程序类型名称
     */
    private String caseProgramTypeName;

    /**
     * 案件类型编码
     */
    private String caseTypeCode;

    /**
     * 案件登记日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDateTime caseCreateTime;
    /**
     * 立案日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDateTime caseRegistTime;

    /**
     * 案件期限截止时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDateTime caseTimelimit;

    /**
     * 案件当前阶段名称
     */
    private String caseCurrentStageName;
    /**
     * 案件当前环节名称
     */
    private String caseCurrentLinkName;

    /**
     * 裁决完毕日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDateTime caseVerdictEndTime;

    /**
     * 结案日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDateTime caseEndTime;

    /**
     * 案件状态
     */
    private String caseStatus;
    /**
     * 案件文书预览
     */
    private String documentUrl;


    private String remainTime;
    private String remainVerdictTime;
    /**
     * 集体议案   = 2时为集体议案
     */
    private String collectiveDiscuss;
    /**
     * 集体议案文书预览
     */
    private String collectiveDiscussDocumentUrl;
    /**
     * 处罚建议
     */
    private String punishOpinion;
    /**
     * 调查结论;1:予以处罚,2:不予处罚(单当事人和合并处罚时使用)
     */
    private String investConclusion;

    /**
     * 处置方式(1-合并处罚/2-分别处罚)
     */
    private String handleType;
    /**
     * 案件案由、当事人类型；1：单案由单当事人 2：多案由单当事人 3：单案由多当事人
     */
    private String casePartiesReasonType;

    /**
     * 是否案件补录 1:是 其他:否
     */
    private String isCaseAdditionalApproval;

    /**
     * 自动结案提示(简案快办)
     */
    private FastAutoCloseCaseReminderVo fastAutoCloseCaseReminderVo;

    /**
     * 简案快办可操作性按钮列表
     *
     * supplement : 继续补充
     * mergeSubmit : 提交审批
     * send : 电子送达
     * waiverPlea : 放弃陈述申辩
     * decide : 处罚决定
     * execute : 执行情况
     * closeCase : 结案归档
     */
    private List<FastCaseButtonVo> fastCaseButtonList;

    /**
     * 需送达文书(简案快办)
     */
    private AppFastCaseSendDocumentVo fastCaseSendDocument;
    /**
     *  是否存在委托事项，false-不存在，true-存在
     */
    private Boolean hadEntrustCase = false;

    /**
     * 委托事项案件原由信息
     */
    List<CaseReasonEntrustVo> entrustReasonList;
}
